package cn.tedu.micro.demo.common.service;

import cn.tedu.micro.demo.common.mapper.CartMapper;
import cn.tedu.micro.demo.common.pojo.po.CartPO;
import cn.tedu.micro.demo.common.pojo.vo.CartVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class CartServiceImpl implements CartService{
    @Autowired
    private CartMapper cartMapper;

    @Override
    public void saveCart(Integer userId, String productCode, Integer count) {
//        将入参组织成一个CartPO
        CartPO cartPO = new CartPO(null, userId, productCode, count);
//        需要新增sql insert into cart_tbl(user_id,product_code,count) values(?,?,?)
        cartMapper.insert(cartPO);
    }

    @Override
    public List<CartVO> myCartList(Integer userId) {
//        使用baseMapper的现成方法，必须前提是 知道sql怎么写
//        select id,user_id,product_code,count from cart_tbl where user_id = #{userId}
//        select 查询 主要告诉持久层mapper 的where条件
        QueryWrapper<CartPO> whereWrapper = new QueryWrapper<>();
        whereWrapper.eq("user_id",userId);
//        使用这个天剑 搜索的是list selectList 搜索的的是一个selectOne
       List<CartPO> pos =  cartMapper.selectList(whereWrapper);
//       转化pos为vos，能否查询出来数据，pos是空
        if (pos!=null && pos.size()>0){
//            便利pos 转化为vos
            List<CartVO> vos=new ArrayList();
            for (CartPO cartPO : pos) {
                CartVO cartVO=new CartVO();
                BeanUtils.copyProperties(cartPO,cartVO);
                vos.add(cartVO);
            }
            return vos;
        }
        return null;
    }
}
